# 内核启动！

# OpenSBI启动之后将要跳转到的一段汇编代码。
# 在这里进行内核栈的分配，
# 然后转入C语言编写的内核初始化函数。

#include <mmu.h>
#include <memlayout.h>

    .section .text,"ax",%progbits
    .globl kern_entry
kern_entry:
    # 将bootstacktop的地址加载到栈指针寄存器sp中。
    # la（Load Address）指令用于加载一个地址到寄存器中。
    la sp, bootstacktop

    # 使用tail指令跳转到kern_init标签处执行。tail指令是一种无条件跳转指令。
    tail kern_init

.section .data
    # .align 2^12
    .align PGSHIFT
    .global bootstack
bootstack:
    .space KSTACKSIZE
    .global bootstacktop
bootstacktop: